package Questao;

import java.util.UUID;

public abstract class Questao implements Comparable<Questao>
{
    private String pergunta;
    private String resposta;
    private Dificuldade dificuldade;
    private String ID;

    public Questao(String pergunta,String resposta, Dificuldade dificuldade)
    {
        this.pergunta = pergunta;
        this.resposta = resposta;
        this.dificuldade = dificuldade;
        this.ID = UUID.randomUUID().toString();
    }

    public Questao(){}

    public String getResposta() { return resposta; }

    public void setResposta(String resposta) { this.resposta = resposta; }

    public String getID() { return ID; }

    public void setID(String ID) { this.ID = ID; }

    public Dificuldade getDificuldade() { return dificuldade; }

    public void setDificuldade(Dificuldade dificuldade) { this.dificuldade = dificuldade; }

    public String getPergunta() { return pergunta; }

    public void setPergunta(String newPergunta) { pergunta = newPergunta; }

    @Override
    public boolean equals(Object o)
    {
        if(o == null)
            return false;

        Questao q = (Questao)o;
        String tipoQuestao = q.getTipoQuestao();

        if(q == this)
            return true;

        if(!tipoQuestao.equalsIgnoreCase(getTipoQuestao()))
            return false;

        return (q.pergunta.equalsIgnoreCase(pergunta));
    }

    public int compareTo(Questao o)
    {
        int primeiraComparacao;

        primeiraComparacao = pergunta.compareTo(o.getPergunta());

        if(primeiraComparacao == 0)
            return resposta.compareTo(o.getResposta());
        else
            return primeiraComparacao;
    }

    @Override
    public String toString()
    {
        return this.pergunta;
    }

    public abstract String getTipoQuestao();
    public abstract String[] getConjuntoAlternativas();
}
